#include <stdio.h>
#include <stdlib.h>


// 申请和初始化的最小单位均是字节
int main1()
{
    // 基本数据类型在栈和堆上
    int a;
    a = 100;
    printf("a = %d\n",a);
    int *p = (int*)malloc(1*sizeof(int));
    *p = 100;
    printf("*p = %d\n",*p);

    // 数组数据类型在栈和堆上
    int arr[10];
    int *pacopy = arr;
    for(int i = 0; i < 10; i++)
    {
        printf("*pacopy = %d\n",*pacopy++);
    }
    free(pacopy);

    int *pa = (int*)malloc(10*sizeof (int));
    // *pa = 16843009
//    memset(pa,1,10*sizeof (int));
//    for(int i = 0; i < 40; i++)
//    {
//        printf("*pa = %#x\n",((char*)pa)[i]);
//    }



    memset(pa,0,10*sizeof (int));
    for(int i = 0; i < 10; i++)
    {
        printf("*pa = %d\n",pa[i]);
    }
    free(pa);


//    for(int i = 0; i < 10; i++)
//    {
//        printf("*pa = %d\n",pa++);
//    }
//    free(pa);
//     free(pa,40);
    return 0;
}

int main()
{
    int *p =(int*)calloc(10,sizeof(int));
//    int *p = (int*)malloc(10*sizeof (int));
    for(int i = 0; i < 10; i++)
    {
        printf("*p = %d\n",p[i]);
    }
    free(p);
    return 0;
}
